org $02863D

decompress_gfx:
	REP #$20
	LDA #$0400
	STA $1C
	STZ $0C
	STZ $1A
	BRA load_gfx_pointer

;*****
	REP #$20
	LDA $1C
	AND #$03FF
	STA $0C
	STA $1A
	CLC
	ADC #$0080
	STA $1C
;*****
	
load_gfx_pointer:
	SEP #$20
	PHB
	LDA #$7E
	PHA
	PLB
	REP #$10
	REP #$20
	LDA $10
	BNE +
	INC $10
	LDX $18
	LDA $010000, X
	STA $00
	INX
	INX
	SEP #$20
	LDA $010000, X
	STA $02
	INX
	STX $18
	LDY #$0000
	STZ $14
	STY $0C
	REP #$20
	LDA [$00], Y
	STA $08
	INY
	INY
	STY $06
	LDY #$03FE
	LDA #$0000
-	STA [$03], Y
	DEY
	DEY
	BPL -
	BRA +

BRANCH_LAMBDA
	STZ $10
BRANCH_SIGMA
	PLB
	REP #$20
	RTL
+	SEP #$20
	LDA $14
	BEQ BRANCH_DELTA
	CMP #$01
	BNE BRANCH_EPSILON
	JMP $879C  ;  $1079C IN ROM
BRANCH_EPSILON
	CMP #$02
	BNE BRANCH_ZETA
	JMP $875C  ;  $1075C IN ROM
BRANCH_ZETA
	CMP #$03
	BNE BRANCH_THETA
	JMP $873B  ;  $1073B IN ROM
BRANCH_THETA
	CMP #$04
	BEQ BRANCH_IOTA
	CMP #$05
	BEQ BRANCH_KAPPA
BRANCH_DELTA
	LDY $06
	CPY $08
	BCS BRANCH_LAMBDA
	LDA [$00], Y
	INY
	STY $06
	CMP #$80
	BCS BRANCH_MU
	JMP $8777  ;  $10777 IN ROM
BRANCH_MU
	CMP #$A0
	BCC BRANCH_NU
	CMP #$C0
	BCC BRANCH_XI
	CMP #$E0
	BCC BRANCH_OMICRON
	BCS BRANCH_PI
BRANCH_XI
	AND #$1F
	CLC
	ADC #$02
	STA $0E
BRANCH_IOTA
	DEC $0E
	BPL BRANCH_RHO
	JMP $87C3  ;  $107C3 IN ROM
BRANCH_RHO
	LDA #$05
	STA $14
	LDA #$00
	LDY $0C
	STA ($03), Y
	INY
	STY $0C
	CPY $1C
	BCS BRANCH_SIGMA
BRANCH_KAPPA
	LDA #$04
	STA $14
	LDY $06
	LDA [$00], Y
	INY
	STY $06
	LDY $0C
	STA ($03), Y
	INY
	STY $0C
	CPY $1C
	BCC BRANCH_IOTA
	BRA BRANCH_SIGMA
BRANCH_OMICRON
	PHA
	LDY $06
	LDA [$00], Y
	INY
	STY $06
	BRA BRANCH_TAU
BRANCH_PI
	PHA
	LDA #$00
BRANCH_TAU
	STA $0A
	LDA #$03
	STA $14
	PLA
	AND #$1F
	CLC
	ADC #$02
	STA $0E
$1073B ALTERNATE ENTRY POINT
	LDA $0A
	LDY $0C
BRANCH_PHI
	DEC $0E
	BMI BRANCH_UPSILON
	STA ($03), Y
	INY
	CPY $1C
	BCC BRANCH_PHI
	STY $0C
	BRL BRANCH_SIGMA
BRANCH_UPSILON
	STY $0C
	BRL BRANCH_CHI
BRANCH_NU
	AND #$1F
	STA $0E
	LDA #$02
	STA $14
$1075C ALTERNATE ENTRY POINT
	LDX $06
BRANCH_OMEGA
	DEC $0E
	BMI BRANCH_PSI
	TXY
	LDA [$00], Y
	INY
	TYX
	LDY $0C
	STA ($03), Y
	INY
	STY $0C
	CPY $1C
	BCC BRANCH_OMEGA
	STX $06
	BRL BRANCH_SIGMA
$10777 ALTERNATE ENTRY POINT
	STA $0B
	LSR A
	LSR A
	CLC
	ADC #$02
	STA $0E
	LDY $06
	LDA [$00], Y
	INY
	STY $06
	STA $0A
	REP #$20
	LDA $0A
	SEC
	SBC #$03DF
	AND #$03FF
	STA $0A
	SEP #$20
	LDA #$01
	STA $14
$1079C ALTERNATE ENTRY POINT
	LDX $0A
BRANCH_ULTIMA
	DEC $0E
	BMI BRANCH_CHI
	TXY
	LDA ($03), Y
	INY
	CPY #$0400
	BCC BRANCH_ALTIMA
	LDY #$0000
BRANCH_ALTIMA
	TYX
	LDY $0C
	STA ($03), Y
	INY
	STY $0C
	CPY $1C
	BCC BRANCH_ULTIMA
	STX $0A
	BRL BRANCH_SIGMA
BRANCH_PSI
	STX $06
	BRA BRANCH_OPTIMUS
$107C3 ALTERNATE ENTRY POINT
BRANCH_CHI
	STZ $0A
BRANCH_OPTIMUS
	STZ $14
	BRL BRANCH_DELTA